/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.dengues.model.component;

import org.eclipse.emf.common.util.EMap;

import org.eclipse.emf.ecore.EObject;

import org.eclipse.emf.ecore.util.FeatureMap;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Document Root</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.dengues.model.component.DocumentRoot#getMixed <em>Mixed</em>}</li>
 *   <li>{@link org.dengues.model.component.DocumentRoot#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
 *   <li>{@link org.dengues.model.component.DocumentRoot#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
 *   <li>{@link org.dengues.model.component.DocumentRoot#getCOMPONENT <em>COMPONENT</em>}</li>
 *   <li>{@link org.dengues.model.component.DocumentRoot#getCONNECTION <em>CONNECTION</em>}</li>
 *   <li>{@link org.dengues.model.component.DocumentRoot#getCONNECTIONS <em>CONNECTIONS</em>}</li>
 *   <li>{@link org.dengues.model.component.DocumentRoot#getHEADER <em>HEADER</em>}</li>
 *   <li>{@link org.dengues.model.component.DocumentRoot#getITEM <em>ITEM</em>}</li>
 *   <li>{@link org.dengues.model.component.DocumentRoot#getITEMS <em>ITEMS</em>}</li>
 *   <li>{@link org.dengues.model.component.DocumentRoot#getPARAMETER <em>PARAMETER</em>}</li>
 *   <li>{@link org.dengues.model.component.DocumentRoot#getPARAMETERS <em>PARAMETERS</em>}</li>
 *   <li>{@link org.dengues.model.component.DocumentRoot#getRETURN <em>RETURN</em>}</li>
 *   <li>{@link org.dengues.model.component.DocumentRoot#getRETURNS <em>RETURNS</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.dengues.model.component.ComponentPackage#getDocumentRoot()
 * @model extendedMetaData="name='' kind='mixed'"
 * @generated
 */
public interface DocumentRoot extends EObject {
    /**
     * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
     * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Mixed</em>' attribute list.
     * @see org.dengues.model.component.ComponentPackage#getDocumentRoot_Mixed()
     * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
     *        extendedMetaData="kind='elementWildcard' name=':mixed'"
     * @generated
     */
    FeatureMap getMixed();

    /**
     * Returns the value of the '<em><b>XMLNS Prefix Map</b></em>' map.
     * The key is of type {@link java.lang.String},
     * and the value is of type {@link java.lang.String},
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>XMLNS Prefix Map</em>' map isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>XMLNS Prefix Map</em>' map.
     * @see org.dengues.model.component.ComponentPackage#getDocumentRoot_XMLNSPrefixMap()
     * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString>" transient="true"
     *        extendedMetaData="kind='attribute' name='xmlns:prefix'"
     * @generated
     */
    EMap<String, String> getXMLNSPrefixMap();

    /**
     * Returns the value of the '<em><b>XSI Schema Location</b></em>' map.
     * The key is of type {@link java.lang.String},
     * and the value is of type {@link java.lang.String},
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>XSI Schema Location</em>' map isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>XSI Schema Location</em>' map.
     * @see org.dengues.model.component.ComponentPackage#getDocumentRoot_XSISchemaLocation()
     * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString>" transient="true"
     *        extendedMetaData="kind='attribute' name='xsi:schemaLocation'"
     * @generated
     */
    EMap<String, String> getXSISchemaLocation();

    /**
     * Returns the value of the '<em><b>COMPONENT</b></em>' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * <!-- begin-model-doc -->
     * Component root.
     * <!-- end-model-doc -->
     * @return the value of the '<em>COMPONENT</em>' containment reference.
     * @see #setCOMPONENT(COMPONENTType)
     * @see org.dengues.model.component.ComponentPackage#getDocumentRoot_COMPONENT()
     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
     *        extendedMetaData="kind='element' name='COMPONENT' namespace='##targetNamespace'"
     * @generated
     */
    COMPONENTType getCOMPONENT();

    /**
     * Sets the value of the '{@link org.dengues.model.component.DocumentRoot#getCOMPONENT <em>COMPONENT</em>}' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>COMPONENT</em>' containment reference.
     * @see #getCOMPONENT()
     * @generated
     */
    void setCOMPONENT(COMPONENTType value);

    /**
     * Returns the value of the '<em><b>CONNECTION</b></em>' containment reference.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>CONNECTION</em>' containment reference isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>CONNECTION</em>' containment reference.
     * @see #setCONNECTION(CONNECTIONType)
     * @see org.dengues.model.component.ComponentPackage#getDocumentRoot_CONNECTION()
     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
     *        extendedMetaData="kind='element' name='CONNECTION' namespace='##targetNamespace'"
     * @generated
     */
    CONNECTIONType getCONNECTION();

    /**
     * Sets the value of the '{@link org.dengues.model.component.DocumentRoot#getCONNECTION <em>CONNECTION</em>}' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>CONNECTION</em>' containment reference.
     * @see #getCONNECTION()
     * @generated
     */
    void setCONNECTION(CONNECTIONType value);

    /**
     * Returns the value of the '<em><b>CONNECTIONS</b></em>' containment reference.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>CONNECTIONS</em>' containment reference isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>CONNECTIONS</em>' containment reference.
     * @see #setCONNECTIONS(CONNECTIONSType)
     * @see org.dengues.model.component.ComponentPackage#getDocumentRoot_CONNECTIONS()
     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
     *        extendedMetaData="kind='element' name='CONNECTIONS' namespace='##targetNamespace'"
     * @generated
     */
    CONNECTIONSType getCONNECTIONS();

    /**
     * Sets the value of the '{@link org.dengues.model.component.DocumentRoot#getCONNECTIONS <em>CONNECTIONS</em>}' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>CONNECTIONS</em>' containment reference.
     * @see #getCONNECTIONS()
     * @generated
     */
    void setCONNECTIONS(CONNECTIONSType value);

    /**
     * Returns the value of the '<em><b>HEADER</b></em>' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * <!-- begin-model-doc -->
     * Component Header node default
     * <!-- end-model-doc -->
     * @return the value of the '<em>HEADER</em>' containment reference.
     * @see #setHEADER(HEADERType)
     * @see org.dengues.model.component.ComponentPackage#getDocumentRoot_HEADER()
     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
     *        extendedMetaData="kind='element' name='HEADER' namespace='##targetNamespace'"
     * @generated
     */
    HEADERType getHEADER();

    /**
     * Sets the value of the '{@link org.dengues.model.component.DocumentRoot#getHEADER <em>HEADER</em>}' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>HEADER</em>' containment reference.
     * @see #getHEADER()
     * @generated
     */
    void setHEADER(HEADERType value);

    /**
     * Returns the value of the '<em><b>ITEM</b></em>' containment reference.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>ITEM</em>' containment reference isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>ITEM</em>' containment reference.
     * @see #setITEM(ITEMType)
     * @see org.dengues.model.component.ComponentPackage#getDocumentRoot_ITEM()
     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
     *        extendedMetaData="kind='element' name='ITEM' namespace='##targetNamespace'"
     * @generated
     */
    ITEMType getITEM();

    /**
     * Sets the value of the '{@link org.dengues.model.component.DocumentRoot#getITEM <em>ITEM</em>}' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>ITEM</em>' containment reference.
     * @see #getITEM()
     * @generated
     */
    void setITEM(ITEMType value);

    /**
     * Returns the value of the '<em><b>ITEMS</b></em>' containment reference.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>ITEMS</em>' containment reference isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>ITEMS</em>' containment reference.
     * @see #setITEMS(ITEMSType)
     * @see org.dengues.model.component.ComponentPackage#getDocumentRoot_ITEMS()
     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
     *        extendedMetaData="kind='element' name='ITEMS' namespace='##targetNamespace'"
     * @generated
     */
    ITEMSType getITEMS();

    /**
     * Sets the value of the '{@link org.dengues.model.component.DocumentRoot#getITEMS <em>ITEMS</em>}' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>ITEMS</em>' containment reference.
     * @see #getITEMS()
     * @generated
     */
    void setITEMS(ITEMSType value);

    /**
     * Returns the value of the '<em><b>PARAMETER</b></em>' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * <!-- begin-model-doc -->
     * Component parameter is PARAMETERS's children.
     * <!-- end-model-doc -->
     * @return the value of the '<em>PARAMETER</em>' containment reference.
     * @see #setPARAMETER(PARAMETERType)
     * @see org.dengues.model.component.ComponentPackage#getDocumentRoot_PARAMETER()
     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
     *        extendedMetaData="kind='element' name='PARAMETER' namespace='##targetNamespace'"
     * @generated
     */
    PARAMETERType getPARAMETER();

    /**
     * Sets the value of the '{@link org.dengues.model.component.DocumentRoot#getPARAMETER <em>PARAMETER</em>}' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>PARAMETER</em>' containment reference.
     * @see #getPARAMETER()
     * @generated
     */
    void setPARAMETER(PARAMETERType value);

    /**
     * Returns the value of the '<em><b>PARAMETERS</b></em>' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * <!-- begin-model-doc -->
     * Component parameters, contains all parameters.
     * <!-- end-model-doc -->
     * @return the value of the '<em>PARAMETERS</em>' containment reference.
     * @see #setPARAMETERS(PARAMETERSType)
     * @see org.dengues.model.component.ComponentPackage#getDocumentRoot_PARAMETERS()
     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
     *        extendedMetaData="kind='element' name='PARAMETERS' namespace='##targetNamespace'"
     * @generated
     */
    PARAMETERSType getPARAMETERS();

    /**
     * Sets the value of the '{@link org.dengues.model.component.DocumentRoot#getPARAMETERS <em>PARAMETERS</em>}' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>PARAMETERS</em>' containment reference.
     * @see #getPARAMETERS()
     * @generated
     */
    void setPARAMETERS(PARAMETERSType value);

    /**
     * Returns the value of the '<em><b>RETURN</b></em>' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * <!-- begin-model-doc -->
     * component return.
     * <!-- end-model-doc -->
     * @return the value of the '<em>RETURN</em>' containment reference.
     * @see #setRETURN(RETURNType)
     * @see org.dengues.model.component.ComponentPackage#getDocumentRoot_RETURN()
     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
     *        extendedMetaData="kind='element' name='RETURN' namespace='##targetNamespace'"
     * @generated
     */
    RETURNType getRETURN();

    /**
     * Sets the value of the '{@link org.dengues.model.component.DocumentRoot#getRETURN <em>RETURN</em>}' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>RETURN</em>' containment reference.
     * @see #getRETURN()
     * @generated
     */
    void setRETURN(RETURNType value);

    /**
     * Returns the value of the '<em><b>RETURNS</b></em>' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * <!-- begin-model-doc -->
     * Component returns.
     * <!-- end-model-doc -->
     * @return the value of the '<em>RETURNS</em>' containment reference.
     * @see #setRETURNS(RETURNSType)
     * @see org.dengues.model.component.ComponentPackage#getDocumentRoot_RETURNS()
     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
     *        extendedMetaData="kind='element' name='RETURNS' namespace='##targetNamespace'"
     * @generated
     */
    RETURNSType getRETURNS();

    /**
     * Sets the value of the '{@link org.dengues.model.component.DocumentRoot#getRETURNS <em>RETURNS</em>}' containment reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>RETURNS</em>' containment reference.
     * @see #getRETURNS()
     * @generated
     */
    void setRETURNS(RETURNSType value);

} // DocumentRoot
